Плохо! Плохо!:  0
Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 12

Тема: [2003] Как сделать такой формат диалога?

  1. #1

    2003 Game Icon [2003] Как сделать такой формат диалога?

    Всем привет! Я решил снова вернуться в RPG Maker. Но, уже в 2003.
    Я хочу сделать так чтоб диалоги выглядели так:

    Как это можно сделать?
    (Я знаю что это на MV)
    (это тот результат который хочу получить) Еще одно фото для примера:

    Игра: Odyssey
    Заранее спасибки!
    Последний раз редактировалось хлеушек; 22.01.2022 в 19:45.

  2. #2
    Администратор Аватар для Пётр
    Информация о пользователе
    Регистрация
    24.04.2014
    Адрес
    Краснодар
    Сообщений
    3,961
    Записей в дневнике
    6
    Репутация: 132 Добавить или отнять репутацию

    По умолчанию

    Никак.
    Либо заморачиваться с картинками.
    Но это такой геммор, что проще... Взять МВ.

  3. #3
    Маститый Аватар для Antberg
    Информация о пользователе
    Регистрация
    14.04.2008
    Сообщений
    1,351
    Записей в дневнике
    3
    Репутация: 52 Добавить или отнять репутацию

    По умолчанию

    Это возможно. Я видел какой-то патч, позволяющий располагать текст в любом месте экрана, в том числе в маленьких блоках. Это было примерно в 2015 году. Автором, возможно, был Cherry, и выложено это было среди множества других модификаций. Предположу, что это было не для Steam-версии, а для обычного старого 2003 Мэйкера. Но сейчас, скорее всего есть что-то аналогичное для Easy.

  4. #4
    Бывалый Аватар для Phileas
    Информация о пользователе
    Регистрация
    05.02.2016
    Адрес
    HD 128620, HR 5459, CP−60°5483, GCTP 3309.00A, LHS 50
    Сообщений
    628
    Записей в дневнике
    26
    Репутация: 23 Добавить или отнять репутацию

    По умолчанию

    Есть точно такой скрипт для VX Ace. Принципиально нужен именно 2003?
    Мои игры

    Мои плагины

    Мой Telegram-канал

    Мой Boosty



    Спойлер In my humble opinion :

    Все мои сообщения отражают лишь моё скромное мнение. Я ни в коем случае не пытаюсь кого-либо обидеть, ни на кого/что не наезжаю и ничего не навязываю. Благодарю за понимание и адекватность.

  5. #5
    Маститый Аватар для Alisa
    Информация о пользователе
    Регистрация
    29.08.2013
    Сообщений
    1,432
    Записей в дневнике
    8
    Репутация: 76 Добавить или отнять репутацию

    По умолчанию

    Я как то хотела пересесть за руль 2003 мукера, но меня отговорили. На нём работать, если чисто по фану хочется её стиль боёвки и тайлсеты, а так я, напримере себя просто перенесла всю графику на нравящийся мне мукер. Вывод таких сообщений да, через скрипт делался (если говорить о VX эйсе). Где то был, могу поискать.


    Спойлер скрипт для VX Ace:
    module Lune_Message
    #================================================= ======
    # Lune Message System
    # Author: Raizen
    # Compatible with: RMVXAce
    # The script allows message boxes above and below the
    # character, with automatic size making a more interatvice
    # message system between characters.



    # Instructions

    # To use the message just call the show message
    # either with a face or not.

    # before showing the message configure the character that
    # will receive the message box.
    # Also configure if it is below or above the character.

    # It is also possible to toggle between the new message system
    # and the old message system

    # To configure the message system just do the following.

    # Call Script:Lune_Message.config(p, id)

    # Being p the position of the message box.
    # 1 = above the character
    # 0 = below the character
    # 2 = old message system

    # To deactivate this script just
    # Call Script this way
    # Call Script:Lune_Message.config(2, 0)
    # Put a 1 frame wait before changing between the message systems,
    # to give the system the time to reconfigure all the positions back to
    # the old system, or from the old to the new system.

    # ID is the event ID, being the ID 0 it is the Hero.
    # The windows size is configured automatically, being that you
    # will need to choose the length of the font to ajust better to the
    # message box. (In pixels)

    Espacamento = 11

    # Size of the characters that you are using, an estimate to calculate
    # the Boxes position.

    Tamanho = 48

    # Name of the picture file that will put a cursor above the character
    # which is talking.
    # In case you do not need any picture files put the constant this way.
    # Imagem = ""
    # The image needs to be in the file Graphics/System inside your project.
    Imagem = "arrow"
    # Height of the arrow image, for position displacement.
    Alt = 10
    # Movement of the arrow, 0 to deactivate.
    Mov = 0
    # ================================================== ======================
    # Here starts the script.
    # ================================================== ======================

    def self.config(p, id)
    posicao(p)
    identificacao(id)
    end

    def self.posicao(p = nil)
    @p = p unless p == nil
    return @p
    end

    def self.identificacao(id = nil)
    @id = id unless id == nil
    return @id
    end
    end

    #================================================= =============================
    # ** Janela auxiliar
    #================================================= =============================
    class Lune_Window_Message < Window_Base
    include Lune_Message
    def initialize(x, y, window_width, window_height)
    super(x, y, window_width, window_height)
    self.z = 199
    self.openness = 0
    @get_sprite = true
    @sprite_arrow = Sprite.new
    @sprite_arrow.bitmap = Cache.system(Imagem)
    if Lune_Message.identificacao == 0
    @lune_x = $game_player.screen_x
    @lune_y = $game_player.screen_y
    else
    @lune_x = $game_map.events[Lune_Message.identificacao].screen_x
    @lune_y = $game_map.events[Lune_Message.identificacao].screen_y
    end
    @sprite_arrow.x = @lune_x - 8
    @sprite_arrow.y = @lune_y - Lune_Message::Tamanho
    end
    def refresh
    if @get_sprite == true
    @sprite_arrow.y += Lune_Message::Mov
    @get_sprite = false
    else
    @sprite_arrow.y -= Lune_Message::Mov
    @get_sprite = true
    end
    end
    def openlune
    self.openness += 40
    self.openness <= 254 ? (return false) : (return true)
    end
    def closelune
    @sprite_arrow.opacity = 0 unless Imagem.nil?
    self.openness -= 40
    self.openness >= 1 ? (return false) : (return true)
    end
    def dispose
    @sprite_arrow.dispose
    super
    end
    end


    class Game_Message
    # Retorna o valor da quantidade de linhas
    def get_lune_lines
    @lune_text_size = 0
    @texts.inject("") {|r, text| @lune_text_size += 1}
    return @lune_text_size
    end
    # Retorna o valor do tamanho do texto.
    def get_lune_length
    @lune_length_size = 0
    @biggest = 0
    @texts.inject("") {|r, text|
    if text.size > @lune_length_size
    @lune_length_size = text.size
    @biggest = text.dup
    @biggest.delete! "\."
    @biggest.delete! "\!"
    @biggest.delete! "\c["
    @biggest.delete! "]"
    @biggest.delete! "["
    p @biggest
    end
    }
    return @biggest
    end
    end

    #================================================= =============================
    # ** Window_Message
    #------------------------------------------------------------------------------
    # Esta janela de mensagem é usada para exibir textos.
    #================================================= =============================
    #--------------------------------------------------------------------------
    # * Aquisição da largura da janela
    #--------------------------------------------------------------------------
    class Window_Message < Window_Base
    # aliasing
    alias lune_message_update update
    alias lune_process_all_text process_all_text
    alias lune_message_dispose dispose
    alias lune_input_choice input_choice
    def initialize
    super(0, 0, Graphics.width, fitting_height(4))
    self.z = 200
    self.openness = 0
    create_all_windows
    create_back_bitmap
    create_back_sprite
    clear_instance_variables

    end
    def window_width
    text_size($game_message.get_lune_length).width + Lune_Message::Espacamento
    end
    #--------------------------------------------------------------------------
    # * Aquisição da altura da janela
    #--------------------------------------------------------------------------
    def window_height
    fitting_height($game_message.get_lune_lines)
    end
    def update(*args)
    lune_message_update(*args)
    unless Lune_Message.posicao == 2
    @lune_message.refresh if @lune_message and Graphics.frame_count % 25 == 1
    self.opacity = 0
    end
    end
    def fiber_main
    $game_message.visible = true
    update_background
    lune_update_placement if Lune_Message.posicao == 2
    loop do
    if Lune_Message.posicao == 2
    lune_process_all_text if $game_message.has_text?
    else
    process_all_text if $game_message.has_text?
    end
    process_input
    $game_message.clear
    @gold_window.close
    Fiber.yield
    break unless text_continue?
    end
    @lune_message.opacity = 0 unless @lune_message == nil and Lune_Message.posicao == 2
    close_and_wait
    $game_message.visible = false
    @fiber = nil
    end
    def lune_update_placement
    @position = $game_message.position
    self.y = @position * (Graphics.height - height) / 2
    self.x = 0
    @gold_window.y = y > 0 ? 0 : Graphics.height - @gold_window.height
    end
    def update_placement
    @gold_window.y = y > 0 ? 0 : Graphics.height - @gold_window.height
    unless Lune_Message.identificacao.nil?
    self.x = @lune_x - window_width / 2
    self.x -= (self.x + window_width - Graphics.width) if self.x + window_width >= Graphics.width
    self.x -= new_line_x
    self.x = [self.x,0].max
    self.y = @lune_y
    self.y -= window_height + Lune_Message::Tamanho if Lune_Message.posicao == 1
    self.y = [self.y,0].max
    self.y -= (self.y + window_height - Graphics.height) if self.y + window_height >= Graphics.height
    end
    end
    #--------------------------------------------------------------------------
    # * Execução de todos texto
    #--------------------------------------------------------------------------
    def process_all_text
    if Lune_Message.identificacao == 0
    @lune_x = $game_player.screen_x
    @lune_y = $game_player.screen_y
    else
    @lune_x = $game_map.events[Lune_Message.identificacao].screen_x
    @lune_y = $game_map.events[Lune_Message.identificacao].screen_y
    end
    @lune_message.dispose unless @lune_message.nil?
    w = @lune_x - window_width / 2
    h = @lune_y
    $game_message.face_name.empty? ? (w = [w,0].max) : (w = [w,112].max)
    h -= window_height + Lune_Message::Tamanho if Lune_Message.posicao == 1
    h = [h,0].max
    w -= (w + window_width - Graphics.width) if w + window_width >= Graphics.width
    h -= (h + window_height - Graphics.height) if h + window_height >= Graphics.height
    @lune_message = Lune_Window_Message.new(w, h, window_width, window_height)
    @lune_face = Window_Base.new(w - 104, h + 8, 104, 104) unless $game_message.face_name.empty?
    update_placement
    text = convert_escape_characters($game_message.all_text)
    pos = {}
    new_page(text, pos)
    open_and_wait
    process_character(text.slice!(0, 1), text, pos) until text.empty?
    end
    #--------------------------------------------------------------------------
    # * Abertura da janela e espeta até abertura total
    #--------------------------------------------------------------------------
    def open_and_wait
    unless Lune_Message.posicao == 2
    @lune_message.openlune
    Fiber.yield until @lune_message.openlune
    open
    else
    open
    Fiber.yield until open?
    end
    end
    #--------------------------------------------------------------------------
    # * Fechamento da janela e espeta até fechamento total
    #--------------------------------------------------------------------------
    def close_and_wait
    close
    Fiber.yield until all_close?
    @lune_message.closelune if @lune_message
    Fiber.yield until @lune_message.closelune unless Lune_Message.posicao == 2
    end
    #--------------------------------------------------------------------------
    # * Execução de espera de entrada
    #--------------------------------------------------------------------------
    def input_pause
    self.pause = true if Lune_Message.posicao == 2
    wait(10)
    Fiber.yield until Input.trigger?(:B) || Input.trigger?(:C)
    Input.update
    @lune_face.dispose unless @lune_face.nil?
    self.pause = false
    end
    def dispose
    @lune_message.dispose if @lune_message
    Lune_Message.config(2,0)
    lune_message_dispose
    end
    #--------------------------------------------------------------------------
    # * Execução de entrada de escolhas
    #--------------------------------------------------------------------------
    def input_choice
    lune_input_choice
    @lune_face.dispose unless @lune_face.nil?
    end
    end
    Последний раз редактировалось Alisa; 24.01.2022 в 16:53.

  6. #6
    Маститый Аватар для Antberg
    Информация о пользователе
    Регистрация
    14.04.2008
    Сообщений
    1,351
    Записей в дневнике
    3
    Репутация: 52 Добавить или отнять репутацию

    По умолчанию

    Цитата Сообщение от Alisa Посмотреть сообщение
    Я как то хотела пересесть за руль 2003 мукера, но меня отговорили.
    Ужасные люди! *__*

  7. #7

    По умолчанию

    Цитата Сообщение от Antberg Посмотреть сообщение
    Ужасные люди! *__*
    Я даже подозреваю кто =)
    Бери топор - руби хардкор!



  8. #8
    Маститый Аватар для Antberg
    Информация о пользователе
    Регистрация
    14.04.2008
    Сообщений
    1,351
    Записей в дневнике
    3
    Репутация: 52 Добавить или отнять репутацию

    По умолчанию

    Случайно наткнулся.



    В описании к видео можно скачать техническую демку. На видео это не показано, но если поиграть - там реализовано что-то похожее на облачка с текстом.



    И много ещё всяких прибамбас, вроде сообщений большого размера.

    Да, это именно для 2003.
    Последний раз редактировалось Antberg; 28.11.2022 в 16:41.

  9. #9
    Маститый Аватар для Antberg
    Информация о пользователе
    Регистрация
    14.04.2008
    Сообщений
    1,351
    Записей в дневнике
    3
    Репутация: 52 Добавить или отнять репутацию

    По умолчанию

    ...Впрочем, я пока так и не понял, для какой версии 2003 мэйкера это сделано. Текст введён не через диалоговые окна, а через какую-то нераспознаваемую команду. В каком мэйкере не открой - там написано "Unknown Command".

    P.S.: Кажется, понял. Это модификация, которая называется "Maniac Patch" - https://rpgmaker.net/forums/topics/24260/
    Последний раз редактировалось Antberg; 28.11.2022 в 16:57.

  10. #10
    Бывалый Аватар для Alexandr_7
    Информация о пользователе
    Регистрация
    09.08.2015
    Адрес
    пос Октяборьский
    Сообщений
    967
    Репутация: 13 Добавить или отнять репутацию

    По умолчанию

    Цитата Сообщение от Пётр Посмотреть сообщение
    Никак.
    Либо заморачиваться с картинками.
    Но это такой геммор, что проще... Взять МВ.
    Ну вообще если говорить об MV то тогда уж лучше MZ так как можно перенести полностью графику из 2003 и такая поддержка там из коробки. Конечно только в версии 1.5.0 и выше. Сейчас публично тестируется версия 1.6.0 в бета ветке. Там поправлены неудобства версии 1.5.0 при работе с тайлами x16 - x32.

    А на счёт плагина под MZ то можно взять плагин Visu на сообщение который позволяет выводить текст на картинку. Ну или плагин Галва который позволяет выводить сообщения над головами персов.
    Последний раз редактировалось Alexandr_7; 29.11.2022 в 12:30.
    Мой канал на Yotube: Канал Alexandr_5
    Если не говорю движок то это RPG Maker MZ Steam версия!

Страница 1 из 2 12 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Метки этой темы

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •  
[2003] Как сделать такой формат диалога?